The present invention generally relates to programmable circuit devices. More particularly, the present invention relates to an architecture which permits the instantaneous realization in silicon of a customized signal processing device.
Digital signal processing has evolved from being an expensive, esoteric science used primarily in military applications such as radar systems, image recognition, and the like, to a high growth technology which is used in consumer products such as digital audio and the compact disk. Single chip digital signal processors (SCDSPs) were introduced in the early 1980's to specifically address these markets. However, SCDSPs are complex to design and use, and have significant performance limitations. In particular, SCDSPs are limited to a frequency spectrum from DC to the low tens of KHz. Moreover, most SCDSPs have other development environment and hardware performance problems which stem from their Von Neuman, microprocessor origins.
Generic signal processing based products can be segmented as shown in FIG. 1 and described as follows: analog input/output (I/O), and A/D and/or D/A conversion; signal conditioning and processing; sample rate decision processing; and logic, decision, and control processing. The analog interface (I/O) typically performs preamplification and anti-alias filtering prior to A/D conversion in the input direction, as well as D/A conversion, reconstitution filtering, and power amplification in the output direction. The signal conditioning and processing circuitry conducts precision signal processing functions such as filtering, amplification, rectification, etc., as well as fast Fourier transforms and the like. The sample rate decision circuitry includes window comparators, quantizers, companders, expanders, etc. which make simple logic decisions on each and every sample forwarded to it. Finally, the logic, decision, and control processing circuitry in the incoming direction uses the signals emerging from the signal conditioning and processing and the sample rate decision processing circuitry, and makes decisions to control external equipment in some useful manner. In order to control the external equipment, in the outgoing direction, the logic, decision, and control processing circuitry generates signals which require further signal processing to drive or interact with some analog device or equipment. In making decisions, the logic, decision, and control processing circuitry typically utilizes highly data dependent code which runs asynchronously from the signals it utilizes. Examples of such circuitry include speech and image recognition algorithms, disk drive controllers, speech generation algorithms, numerically controlled machine tool controllers, etc.
Based on the above break-down of tasks it can be seen that SCDSPs are called upon to do both of what may be termed "signal processing" and "logic processing". Signal processing is typically computationally intensive, requires low latency and low parasitic overhead for real time I/O, must efficiently execute multiple asynchronous processes, and be controllable. An example of signal processing would be the processing conducted by a biquad filter. A single biquad filter section might typically require eight data memory words and eighteen program memory words. However, it may require many millions of instructions per second of compute power; i.e. it is computationally, but not memory intensive. The signal processing function is better characterized as an "in line" processor rather than a "terminal" processor; signals flow through the biquad filter at high sample rates and provide input to another section(s). As a result, very high I/O bandwidths are commonly required for the signal processing function. Also, where a multiple of biquad filters are required for a signal processing system, the filters will be asynchronous if they are to process signals having independent sources. In other words, signal processors are often called upon to conduct several processing functions in parallel.
In contrast to signal processing, logic processing is usually memory intensive (as opposed to computationally intensive), must efficiently handle multiple interrupts (particularly in a multiprocessor system), and acts as a controller (as opposed to being controllable). A common type of logic processor is the microprocessor which relies on extensive decision oriented software to conduct its processes. This software is typically written in a high level language such as "C". The code often contains numerous "if . . . then . . . else" like constructs which can result in highly variable execution times which are readily dealt with in non-real time applications, but present highly problematic scheduling problems for efficient real time systems.
Comparing the signal and logic processing requirements, it is seen that they are far from similar. Nevertheless, depending upon the circumstances, it is common for logic processors to be called upon to do signal processing, and vice versa. Since the microprocessor art is the older and more developed art, it is not surprising that the architectures of many DSPs have broadly borrowed from the architectures of the microprocessors. Thus, DSPs are often constructed as controllers having an interrupt structure. This type of architecture, however, is not properly suited for the primary functions of digital signal processing.